import jieba
from gensim import corpora,models,similarities

doc0 = "【短信平台】您正在验证短信手机号码，验证码：393937"
doc1 = "【短信平台】您正在验证短信手机号码，验证码：403898"
doc2 = "【短信平台】您正在验证短信手机号码，验证码：545556"
doc3 = "【短信平台】您正在验证短信手机号码，验证码：553332"
doc4 = "【短信平台】您正在验证短信手机号码，验证码：665407"
doc5 = "【短信平台】您正在验证短信手机号码，验证码：722166"
doc6 = "【短信平台】您正在验证短信手机号码，验证码：848707"
doc7 = "【短信平台】您正在验证短信手机号码，验证码：856274"

doc_test="【短信平台】您正在验证短信手机号码，验证码：393937"

all_doc = []
all_doc.append(doc0)
all_doc.append(doc1)
all_doc.append(doc2)
all_doc.append(doc3)
all_doc.append(doc4)
all_doc.append(doc5)
all_doc.append(doc6)
all_doc.append(doc7)


all_doc_list = []
for doc in all_doc:
    doc_list = [word for word in jieba.cut(doc)]
    all_doc_list.append(doc_list)
print(all_doc_list)


doc_test_list = [word for word in jieba.cut(doc_test)]
print(doc_test_list)


dictionary = corpora.Dictionary(all_doc_list)
print(dictionary.keys())

dictionary.token2id

#以下使用doc2bow制作语料库
corpus = [dictionary.doc2bow(doc) for doc in all_doc_list]

#把测试文档也转换为二元组的向量
doc_test_vec = dictionary.doc2bow(doc_test_list)
# doc_test_vec


#使用doc2bow制作语料库
tfidf = models.TfidfModel(corpus)
lsi = models.LsiModel(corpus)

#获取测试文档中，每个词的TF-IDF值
print(tfidf[doc_test_vec])


#对每个目标文档，分析测试文档的相似度
# index = similarities.SparseMatrixSimilarity(tfidf[corpus], num_features=len(dictionary.keys()))
index = similarities.MatrixSimilarity(lsi[tfidf[corpus]])
sim = index[tfidf[doc_test_vec]]

print("sim",sim)
# sim


#根据相似度排序
rs=sorted(enumerate(sim), key=lambda item: -item[1])
print("rs",rs)